This application relates to free list and ring data structure management.
A network processor may buffer data packets dynamically by storing received data in linked memory buffers. After the data associated with a particular buffer have been transmitted, that buffer may be returned to a pool, called a “free list,” where available buffers are stored.
A network processor may also buffer data packets using statically allocated, e.g., predefined memory buffers. A ring data structure includes such predefined memory locations. A pointer may be used to track the insertion location of the ring data structure. Another pointer may be used to track the removal location of the ring data structure.
Managing a large number of pools and buffers efficiently may be an important factor in the operation and cost of network processors.